/*
 * Copyright 2016 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.kie.workbench.common.screens.datasource.management.client.editor.datasource;

import java.util.List;

import org.uberfire.client.mvp.UberElement;
import org.uberfire.commons.data.Pair;

public interface DataSourceDefMainPanelView extends UberElement<DataSourceDefMainPanelView.Presenter> {

    interface Presenter extends Handler {

    }

    interface Handler {

        void onNameChange();

        void onConnectionURLChange();

        void onUserChange();

        void onPasswordChange();

        void onDriverChange();

        void onTestConnection();
    }

    void setName(final String text);

    String getName();

    void setNameErrorMessage(final String message);

    void clearNameErrorMessage();

    String getConnectionURL();

    void setConnectionURL(final String connectionURL);

    void setConnectionURLErrorMessage(final String message);

    void clearConnectionURLErrorMessage();

    String getUser();

    void setUser(final String user);

    void setUserErrorMessage(final String message);

    void clearUserErrorMessage();

    String getPassword();

    void setPassword(final String password);

    void setPasswordErrorMessage(final String message);

    void clearPasswordErrorMessage();

    String getDriver();

    void setDriver(final String driver);

    void setDriverErrorMessage(final String message);

    void clearDriverErrorMessage();

    void loadDriverOptions(final List<Pair<String, String>> driverOptions,
                           final boolean addEmptyOption);
}
